﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using app_Cd.logicaNegocio;

namespace app_Cd.presentacion
{
    /// <summary>
    /// Interaction logic for ingresaCd.xaml
    /// </summary>
    public partial class ingresaCd : Window
    {
        public ingresaCd()
        {
            InitializeComponent();
        }
        /// <summary>
        /// Permite poner en un label el nombre del usuario que inicio sesión
        /// </summary>
        /// <param name="usuario">Nombre de usuario</param>
        public void usuario(string usuario)
        {
            lbl_nombre.Content = usuario;
        }

        private void btn_salir_Click(object sender, RoutedEventArgs e)
        {
            //Cierra este formulario y abre el formulario de ingreso de usuarios
            inicioUs iu = new inicioUs();
            iu.Show();
            iu.usuario(Convert.ToString(lbl_nombre.Content));
            this.Close();
        }

        private void txt_anio_KeyDown(object sender, KeyEventArgs e)
        {
            //valida que se ingresen solo números
            if (e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9)
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void btn_ingresar_Click(object sender, RoutedEventArgs e)
        {
            //Validación decampo vacío
            if (txt_album.Text == "" || txt_artista.Text == "" || txt_categoria.Text == "" || txt_anio.Text == "")
            {
                MessageBox.Show("Faltan datos", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            else 
            {
                //Valida que el disco no exista
                if(admDisco.buscaInfoDisco(txt_album.Text)!=null)
                {
                    MessageBox.Show("El disco ya existe", "Mensaje", MessageBoxButton.OK, MessageBoxImage.Information);
                    limpiar();
                }
                else
                {
                    //variables para almacenar el id del artista y id de la categoria a ingresar
                    int idArtista = 0;
                    int idCategoria = 0;

                    //busca si existe en base de datos el artista y la categoria ingresada
                    var buscaArtista = admDisco.buscaIdArtista(txt_artista.Text);
                    var buscaCategoria = admDisco.buscaCategoria(txt_categoria.Text);

                    //valida que la busqueda haya obtenido resultado
                    if (buscaArtista == null)
                    {
                        //Ingresa un artista nuevo
                        var ingArtista = admDisco.ingresaArtista(txt_artista.Text);
                        idArtista = ingArtista.ID_artista;
                    }
                    else
                    {
                        //establece el valor de la variable idArtista con el valor de la busqueda realizada
                        idArtista = buscaArtista.ID_artista;
                    }
                    //valida que la busqueda haya obtenido resultado
                    if (buscaCategoria == null)
                    {
                        //Ingresa una categoria nuevo
                        var ingCategoria = admDisco.ingresaCategoria(txt_categoria.Text);
                        idCategoria = ingCategoria.ID_categoria;
                    }
                    else
                    {
                        //establece el valor de la variable idCategoria con el valor de la busqueda realizada
                        idCategoria = buscaCategoria.ID_categoria;
                    }
                    //Ingresa un nuevo disco
                    string mensaje = admDisco.ingresaDisco(txt_album.Text, idArtista, idCategoria, Convert.ToInt32(txt_anio.Text));
                    //Mustra un mensaje al usuario
                    MessageBox.Show(mensaje, "Mensaje", MessageBoxButton.OK, MessageBoxImage.Information);
                    limpiar();
                }
            }
        }
        public void limpiar()
        {
            txt_album.Clear();
            txt_artista.Clear();
            txt_anio.Clear();
            txt_categoria.Clear();
        }
    }
}
